<?php

class facturasPeer extends BasefacturasPeer
{
    public static function BuscarNumeroFactura($numerocomprobante, $facturas_id = null){
        /*
         * Funcion para que no se repitan los numeros de Comprobantes
         */
        $criteria = new Criteria();
        $criteria->add(facturasPeer::NUMERO_DE_COMPROBANTE, $numerocomprobante);
        if ($facturas_id){
            $criteria->addAnd(facturasPeer::ID,$facturas_id, Criteria::NOT_EQUAL);
        }
        $resultado = facturasPeer::doCount($criteria);
        if ($resultado){
            return true;
        }
        else{
            return false;
        }

    }
    public static function getListaDePagos($facturas_id, $credito = Null){
        $criteria = new Criteria();
        if ($credito){
             $criteria->add(recibosPeer::FACTURAS_ID,$facturas_id);
             $criteria->addJoin(recibosPeer::ID, recibosportipovalorPeer::RECIBOS_ID, Criteria::INNER_JOIN);
             return recibosportipovalorPeer::doSelect($criteria);
        }
        else{
           $criteria->add(facturasxtiposvaloresPeer::FACTURAS_ID,$facturas_id);
           return facturasxtiposvaloresPeer::doSelect($criteria);
        }
    }
    public static function getCuentasCorrientes($nombre=null, $apellido=null, $ruc=null){
        //Mejorar esta consulta para hacerla mas flexible para que reciba parametros de Criteria tipo Like

        $c = Propel::GetConnection();
        $consulta =  'select clientes.id,clientes.nombre, clientes.apellido,
                      sum(facturas.total) as total, facturas.id as facturas_id
                      from clientes inner join facturas
                      on clientes.id = facturas.clientes_id
                      where facturas.credito = 1
                      group by clientes.id';
        $sentencia = $c->prepare($consulta);
        $sentencia->execute();
        //Segunda consulta para obtener los totales pagados
        //Esta parte me parece que voy a desechar para que se obtengan los totales de las facturas
        // y lo pagado con la funcion getTotalPagado
        $consulta =  'select sum(importe) as pagado, clientes_id as id from recibosportipovalor inner join
                      recibos on recibosportipovalor.recibos_id = recibos.id
                      group by clientes_id'
                      
        ;
        $sentencia2 = $c->prepare($consulta);
        $sentencia2->execute();
        $fila2 = $sentencia2->fetch();
        $ctacte = array(array());$e=0;
        while($fila = $sentencia->fetch()){
            $ctacte[$e]['id']           = $fila['id'];
            if ($ctacte[$e]['id'] == $fila2['id']){
                 $ctacte[$e]['pagado'] =$fila2['pagado'] ;
                $fila2 = $sentencia2->fetch();
            }
            else{
                $ctacte[$e]['pagado']   = 0;   
            }
            $ctacte[$e]['nombre']       = $fila['nombre'];
            $ctacte[$e]['apellido']     = $fila['apellido'];
            $ctacte[$e]['total']        = $fila['total'];
            //
            $ctacte[$e++]['facturas_id']  = $fila['facturas_id'];
        }
        if ($e){
           return $ctacte;
        }
        else return null;
    }
    public function getTableName(){ return parent::TABLE_NAME; }

    public static function getDatosReporte($cliente_id, $fecha_inicio, $fecha_fin , $criterio = null){
          //Si el Criterio es 2 entonces devuelve solo las que son a credito
          $criteria = new criteria;
          $criteria->add(self::CLIENTES_ID, $cliente_id);
          $criteria->add(self::ANULADO,false);
          if ($criterio <> 1)
              if($criterio==2)
                  $criteria->add(self::CREDITO,true);
              else
                  $criteria->add(self::CREDITO,false);
          $criteria->add(self::FECHA,$fecha_inicio.' 00:00:00', Criteria::GREATER_EQUAL);
          $criteria->addAnd(self::FECHA,$fecha_fin.' 23:59:59',    Criteria::LESS_EQUAL);
          return self::doSelect($criteria);

    }
    
}
